<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 变量声明的时候，也可以不用var 

        // 声明变量时 ， 如果不使用var  那么这个变量就是全局变量



        
        //   js代码分为两个阶段
        //      预编译阶段  ---  在代码执行之前，会把所有var声明的变量进行变量提升，再把所有具名函数进行变量提升
        //      代码执行阶段
        


        // function fn() {
        //     a = 5 ;
        //     console.log(a) ;
        // }

        // fn() ;

        // console.log(a) ;  // 没有报错




        // console.log(a) ;   // 报错
        // a = 4 ;
        // console.log(a) ;


        // // 你看到的代码
        // console.log(a) ;   // undefined
        // var a = 4 ;
        // console.log(a) ;   // 4


        // // js真正的执行是这样的
        // var a ;
        // console.log(a) ;   // undefined
        // a = 4 ;
        // console.log(a) ;   // 4




        fn2() ;


        function fn2() {
            console.log('预编译真是666啊') ;
        }



        


    </script>
    
</body>
</html>